package com.example.ranking.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.ranking.domain.dto.PetPopularRespDTO;
import com.example.ranking.domain.po.PetPopularRankingPO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 宠物信息Mapper（继承MyBatis-Plus BaseMapper，无需手动写基础CRUD）
 *
 *
 */
public interface RankingMapper extends BaseMapper<PetPopularRankingPO> {
    /**
     * 分页查询宠物人气榜（按数量降序，即人气从高到低）
     * @param page 分页参数（页码、每页条数）
     * @return 分页统计结果（含品种、数量）
     */
    IPage<PetPopularRankingPO> selectPopularRankingPage(Page<PetPopularRankingPO> page);

    /**
     * 根据品种名查询统计记录（用于更新数量）
     * @param petBreed 宠物品种
     * @return 统计PO（null-无该品种记录）
     */
    PetPopularRankingPO selectByBreed(@Param("petBreed") String petBreed);

    // 全量统计状态3/4的品种数量
    List<PetPopularRespDTO> selectBreedCountByTargetStatus(@Param("statusList") List<Integer> statusList);

    // 批量插入统计记录
    void batchInsert(@Param("list") List<PetPopularRankingPO> poList);
}
